package com.project.mapper;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.pagehelper.PageInfo;
import com.project.bean.RoleBean;
import org.apache.ibatis.annotations.*;

import java.util.List;

/**
 * 角色表业务成接口
 */
@Mapper
public interface IRoleMapper {

    /**
     * 按用户id添加用户角色
     * @param userId 用户id
     * @param roleArray 角色数组
     */
    public void addRoleByUserId(@Param("userId") int userId, @Param("roleArray") int[] roleArray);


    /**
     * 按照角色id查询角色，
     * 同时查询角色权限
     * @param roleId    角色
     */
    public RoleBean findById(int roleId);


    /**
     * 按用户id查找角色
     * @param userId 用户id
     * @return 角色集合
     */
    @Select("SELECT u.*,r.`roleName` FROM sys_user u " +
            "LEFT JOIN sys_userRole ur ON u.`pk_userId`=ur.`fk_userId` " +
            "LEFT JOIN sys_role r ON r.`pk_roleId`=ur.`fk_roleId` WHERE u.`pk_userId`=#{userId}")
    public List<RoleBean> findByUserId(int userId);


    /**
     * 按用户id删除该用户的权限
     * @param userId 用户id
     */
    @Delete("delete * from sys_role where pk_roleId=#{userId}")
    public void delUserRoleByUserId(int userId);


    /**
     * 先查询是否重名，不重名添加角色
     * 同时添加角色权限
     * 否则返回false
     * @param role          角色对象
     */
    @Insert("insert into sys_role(roleName)values(#{roleName})")
    public void addRole(RoleBean role);


    /***
     * 按角色id修改角色权限
     * @param roleId         角色id
     * @param gradeArray    权限数组
     */
    public void updateRoleGrade(@Param("roleId") int roleId,@Param("gradeArray") int[] gradeArray);


    /**
     * 查找所有角色
     * @param角色对象
     */
    @Select("select * from sys_role")
    public List<RoleBean> findAll();


    /**
     * 根据用户id，查找角色权限
     * @param userId    用户id
     * @return
     */
    public List<RoleBean> findRoleGradeByUserId(int userId);

}
